package com.etc.controller;
/**
 * 值班时间控制器
 * @author 小白
 *
 */

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.etc.entity.Registration;
import com.etc.service.RegistrationService;
import com.etc.util.WeekDayUtil;

@Controller
public class WeekDayContorller {
	
	@Autowired
	private RegistrationService registrationService;
	/**
	 * ajax请求   
	 * 判断病人预约时间日期是否正确
	 * @param doctorDuty  医生值班时间
	 * @param bookDay    病人预约日期
	 * @return
	 */
	@RequestMapping(value="getWeekDay",method=RequestMethod.GET)
	@ResponseBody
	public String getWeekDay(String d1,String d2,String doctorDuty,String bookDay) {
		String flag="false";
		//得到最近一个月内医生的值班日期
		List<String> data=WeekDayUtil.getDates(d1,d2,doctorDuty);
		//判断病人预约的时间该医生是否值班
		for (int i = 0; i < data.size(); i++) {
			if (data.get(i).equals(bookDay)) {//预约时间医生有值班
				flag="true";
				break;
			}
			
		}
		
		return flag;
	}
	
	/**
	 * ajax请求   
	 * 判断病人预约具体时间点是否有人预约
	 * @param time 病人预约具体时间点
	 * @param bookDay  病人预约日期
	 * @return
	 */
	@RequestMapping(value="getDayTime",method=RequestMethod.GET)
	@ResponseBody
	public String getDayTime(String time,String bookDay) {
		String flag="false";
		if ("".equals(bookDay)) {
			flag="notdate";//没有选择日期
		}else {
			
			//如果病人选择的时间点在9-20点，正好医院上班时间
			if (9<=Integer.valueOf(time.substring(0, 2))&&Integer.valueOf(time.substring(0, 2))<=20) {
				//得到所有的预约对象
				List<Registration> list=registrationService.selectRegistration();
				//新建一个List<Registration> ，存放病人预约日期中的预约时间
				List<Registration> list2 =new ArrayList<Registration>();
				for (int i = 0; i < list.size(); i++) {
					if (list.get(i).getRegistrationtime().substring(0, 10).equals(bookDay)) {
						list2.add(list.get(i));
					}
					
				}
				//新建一个List<String>，存放病人预约日期当天的所有预约时间
				List<String> timelist =new ArrayList<String>();
				
				for (int i = 0; i < list2.size(); i++) {
					timelist.add(list2.get(i).getRegistrationtime().substring(11, 16));
				}
				
				for (int i = 0; i < timelist.size(); i++) {
					
						if (time.substring(0, 2).equals(timelist.get(i).substring(0, 2))){//病人预约的具体点和数据库一样，那么要判断这个时间点的具体分钟段有没有人预约
							//一个小时最多允许4个人预约
							//如果病人选择的时间具体分钟在0-15分，判断该时间段是否有人预约了
							if (0<=Integer.valueOf(time.substring(3))&&Integer.valueOf(time.substring(3))<=15) {
								if (0<=Integer.valueOf(timelist.get(i).substring(3, 5))&&Integer.valueOf(timelist.get(i).substring(3, 5))<=15) {
									flag="true0-15";//0-15分已有人预约了
								} else {
									flag="false";//0-15分还没有人预约
								}
							}
							//如果病人选择的时间具体分钟在15-30分，判断该时间段是否有人预约了
							else if(15<Integer.valueOf(time.substring(3))&&Integer.valueOf(time.substring(3))<=30){
								if (15<Integer.valueOf(timelist.get(i).substring(3, 5))&&Integer.valueOf(timelist.get(i).substring(3, 5))<=30) {
									flag="true15-30";//15-30分已有人预约了
								} else {
									flag="false";//15-30分还没有人预约
								}
							}
							//如果病人选择的时间具体分钟在30-45分，判断该时间段是否有人预约了
							else if(30<Integer.valueOf(time.substring(3))&&Integer.valueOf(time.substring(3))<=45){
								if (30<Integer.valueOf(timelist.get(i).substring(3, 5))&&Integer.valueOf(timelist.get(i).substring(3, 5))<=45) {
									flag="true30-45";//30-45分已有人预约了
								} else {
									flag="false";//30-45分还没有人预约
								}
							}
							//如果病人选择的时间具体分钟在45-60分，判断该时间段是否有人预约了
							else if(45<Integer.valueOf(time.substring(3))&&Integer.valueOf(time.substring(3))<=60){
								if (45<Integer.valueOf(timelist.get(i).substring(3, 5))&&Integer.valueOf(timelist.get(i).substring(3, 5))<=60) {
									flag="true45-60";//45-60分已有人预约了
								} else {
									flag="false";//45-60分还没有人预约
								}
							}
						}else {
							flag="false";//还没有人预约
						}
					
					
				}
			} else {
				flag="afterwork";//医生还没上班
			}
				
	
	}
		return flag;
	}
	
}
